فرض کن دو تا اسم متفاوت داری که به یه خونه اشاره میکنن. مثلاً «خونه مادربزرگ» و «ویلای شمال» هر دو به یه آدرس واحد اشاره دارن. توی لینوکس، این رو با Hard Link انجام میدی. هر دو اسم به یه Inode اشاره میکنن. این چالش بهت یاد میده چطور همه اسمهایی که به یه Inode اشاره میکنن رو پیدا کنی!
در این چالش، با مفهوم Hard Link و نحوه پیدا کردن فایلهایی با Inode یکسان آشنا میشوید. زمانی که یک Hard Link ایجاد میکنید، در واقع یک نام جدید به یک Inode اضافه میکنید. با استفاده از دستور find -inum میتوانید همه فایلهایی که به یک Inode اشاره میکنند را پیدا کنید.
Hard Link یک نام جدید برای یک فایل موجود است که همان Inode را به اشتراک میگذارد. بنابراین، تغییر در محتوای فایل از طریق هر یک از نامها، روی همه نامها تأثیر میگذارد.
دستور find -inum فایلهایی را که Inode مشخصی دارند، جستجو میکند.
توضیح:
touch mabedini یک فایل خالی به نام mabedini میسازد.
ln mabedini work3/m یک Hard Link به نام m در دایرکتوری work3 ایجاد میکند که به همان Inode اشاره دارد.
stat
خروجی دستور stat mabedini:
توضیح: stat mabedini نشان میدهد که:
خروجی دستور stat work3/m:
توضیح: stat work3/m نیز همان Inode (11303070) را نشان میدهد. یعنی هر دو فایل به یک Inode اشاره میکنند.
توضیح:
find * -inum 11303070 همه فایلهایی را که Inode برابر با 11303070 دارند، پیدا میکند. خروجی نشان میدهد که سه فایل به این Inode اشاره میکنند:
abedini/mohammadmabediniwork3/m
find * به این معنی است که در همه فایلها و دایرکتوریهای مسیر جاری جستجو کن. اگر میخواهید کل سیستم را جستجو کنید، از find / -inum 11303070 استفاده کنید (نیاز به دسترسی root دارد).
در خروجی stat، Links: 3 نشان میدهد که سه نام به این Inode اشاره میکنند. این سه نام عبارتند از:
mabedini (فایل اصلی)work3/m (Hard Link)abedini/mohammad (یک Hard Link دیگر که در تصویر دیده میشود)هر بار که یک Hard Link جدید ایجاد میکنید، تعداد لینکها یک واحد افزایش مییابد.
اگر یک فایل به نام file1.txt بسازید و دو Hard Link به نامهای file2.txt و file3.txt ایجاد کنید، تعداد لینکها ۳ خواهد بود.
یک فایل به نام myfile بسازید. سپس دو Hard Link به نامهای link1 و link2 برای آن ایجاد کنید. با stat تعداد لینکها را بررسی کنید و با find -inum همه فایلهای با Inode یکسان را پیدا کنید.
توضیح: stat -c %i myfile فقط Inode فایل myfile را نمایش میدهد و find * -inum همه فایلهای با آن Inode را پیدا میکند.
find -inum: برای پیدا کردن همه فایلهای با Inode مشخص.stat -c %i: برای نمایش Inode یک فایل.